﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
    //        1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。如果是一个方法只能有一个返回值，那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。

    //参考步骤：
    //定义一个一维数组，数组中存放一些数据（控制台输入）。
    //定义几个变量：max、min、sum、avg

    //定义一个方法，方法返回数组元素之和,方法形参有max min avg。

    //请用ref和out各做一遍，并在注释中，描述他们的区别。
        static void Main(string[] args)
        {
            int[] arr = new int[6];
                        for (int i = 0; i < arr.Length; i++)
                            {
                                while (true)
                                    {
                                        try
                    {
                        Console.WriteLine($"请存入第{i + 1}个数据，数据类型为int");
                        arr[i] = int.Parse(Console.ReadLine());
                                                break;
                                            }
                                        catch (Exception)
                   {
                        Console.WriteLine("请重新输入");
                                            }
                                    }
                                }
                int max1 = arr[0];
                int min1 = arr[0];
                double avg1 = 0;
                int sum1 = GetSum1(arr, ref max1, ref min1, ref avg1);
                Console.WriteLine($"ref ---- sum:{sum1},min:{min1},max:{max1},avg:{avg1}");
                int max2;
                int min2;
                double avg2;
                int sum2 = GetSum2(arr, out max2, out min2, out avg2);
                Console.WriteLine($"out --- sum:{sum2},min:{min2},max:{max2},avg:{avg2}");
                        }
            
                    static int GetSum2(int[] arr, out int max, out int min, out double avg)
        {
                int sum = 0;
                max = arr[0];
                min = arr[0];
                            for (int i = 0; i < arr.Length; i++)
                                {
                                    if (arr[i] > max)
                                        {
                        max = arr[i];
                                        }
                                    if (arr[i] < min)
                                        {
                        min = arr[i];
                                        }
                    sum += arr[i];
                                }
                avg = (double)sum / arr.Length;
                            return sum;
                        }
                    static int GetSum1(int[] arr, ref int max, ref int min, ref double avg)
                    {
                             int sum = 0;
                            for (int i = 0; i < arr.Length; i++)
                            {
                                    if (arr[i] > max)
                                    {
                        max = arr[i];
                                    }
                                    if (arr[i] < min)
                                    {
                        min = arr[i];
                                    }
                        sum += arr[i];
                            }
                        avg = (double)sum / arr.Length;
                           return sum;
                    }
    }
}

